GdkWaylandCairoSurfaceData *data = cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key);
return data->busy;
}
-
-void
-_gdk_wayland_shm_surface_clear (cairo_surface_t *surface)
-{
- GdkWaylandCairoSurfaceData *data = cairo_surface_get_user_data (surface, &gdk_wayland_cairo_key);
- memset (data->buf, 0, data->buf_length);
-}
struct wl_buffer *_gdk_wayland_shm_surface_get_wl_buffer (cairo_surface_t *surface);
void _gdk_wayland_shm_surface_set_busy (cairo_surface_t *surface);
gboolean _gdk_wayland_shm_surface_get_busy (cairo_surface_t *surface);
-void _gdk_wayland_shm_surface_clear (cairo_surface_t *surface);
#endif /* __GDK_PRIVATE_WAYLAND_H__ */
{
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
gdk_wayland_window_ensure_cairo_surface (window);
-
- if (_gdk_wayland_shm_surface_get_busy (impl->cairo_surface))
- {
- /* The surface is busy, so create a temporary surface which we paint
- * to and hope that by the time we're done painting the surface isn't
- * busy any more. */
- return TRUE;
- }
- else
- {
- /* Returning FALSE from begin_paint_region says to use the native
- * backing surface, which is our SHM surface. We need to make sure
- * to clear it before the code tries to paint to it to prevent
- * artifacts from the last paint. */
- _gdk_wayland_shm_surface_clear (impl->cairo_surface);
- return FALSE;
- }
+ return _gdk_wayland_shm_surface_get_busy (impl->cairo_surface);
}
static void